2020-2021 Sunseeker Telemetry and Lighting System
mpu_ex2_twoSeg.c
Go to the documentation of this file.
1 /* --COPYRIGHT--,BSD
2  * Copyright (c) 2017, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  * --/COPYRIGHT--*/
32 //******************************************************************************
54 //******************************************************************************
55 
56 #include "driverlib.h"
57 
58 uint16_t *ptr = 0;
59 uint16_t Data =0;
60 
61 void main(void)
62 {
63  WDT_A_hold(WDT_A_BASE); // Stop WDT
64 
65  //Set P1.0 as an output pin.
66  /*
67 
68  * Select Port 1
69  * Set Pin 0 as output
70  */
71  GPIO_setAsOutputPin(
72  GPIO_PORT_P1,
73  GPIO_PIN0);
74 
75  //Set P3.5 as an output pin.
76  /*
77 
78  * Select Port 3
79  * Set Pin 5 as output
80  */
81 
82  GPIO_setAsOutputPin(
83  GPIO_PORT_P3,
84  GPIO_PIN5
85  );
86 
87  if(MPU_getInterruptStatus(MPU_BASE,MPUSEG2IFG))
88  {
89  //Toggle P1.0 output pin.
90  /*
91 
92  * Select Port 1
93  * Set Pin 0 as output
94  */
95 
96  GPIO_toggleOutputOnPin(
97  GPIO_PORT_P1,
98  GPIO_PIN0
99  );
100 
101  //Toggle P3.5 output pin.
102  /*
103 
104  * Select Port 3
105  * Set Pin 5 as output
106  */
107 
108  GPIO_toggleOutputOnPin(
109  GPIO_PORT_P3,
110  GPIO_PIN5
111  );
112  }
113 
114  __delay_cycles(30000); // Delay to see toggle
115 
116  MPU_enablePUCOnViolation(MPU_BASE,MPU_SECOND_SEG);
117 
118  MPU_initTwoSegments(MPU_BASE, 0x08, MPU_READ|MPU_WRITE|MPU_EXEC, MPU_READ);
119 
120  MPU_start(MPU_BASE);
121 
122  Data = 0x88;
123 
124  // Cause an MPU violation by writing to segment 2
125  ptr = (uint16_t *)0xD002;
126  *ptr = Data;
127 
128 
129  while(1); // Code never gets here
130 }
131 
132 
void main(void)
uint16_t * ptr
uint16_t Data
MPU_start(MPU_BASE)
MPU_enablePUCOnViolation(MPU_BASE, MPU_SECOND_SEG)
__delay_cycles(500000)